草庐IT

C++ 精度 : String to Double

全部标签

c++ - float 到整数的精度与 double 到整数的精度,意想不到的结果

我是计算机工程专业的学生,​​在BYU-Idaho辅导C++入门类(class),一名学生成功地难倒了我。如果为此编写代码:#includeusingnamespacestd;intmain(){floaty=.59;intx=(int)(y*100.0);cout结果=58#includeusingnamespacestd;intmain(){doubley=.59;intx=(int)(y*100.0);cout结果=59我告诉他这是一个精度问题,因为int比float更精确,所以它会丢失信息。double比float更精确,所以它可以工作。但是我不确定我说的是否正确。我认为这与用

c++ - float 精度

float在1.0f和0.0f之间有多少位精度,这样每个值都可以唯一表示?例如,如果第一个小数float不能表示0.13f,答案就是float只有一位精度。 最佳答案 std::numeric_limits::digits10来自http://en.cppreference.com/w/cpp/types/numeric_limits/digits10Thestandard32-bitIEEE754floating-pointtypehasa24bitfractionalpart(23bitswritten,oneimplied),

C++17 十六进制浮点文字单精度后缀冲突?

我在查看浮点文字的C++17规范时发现了一个问题。如何区分单精度数字F和后缀F?例如,文字0x1p0F是转换为double32768.0L还是单精度1.0F?规范说后缀是可选的,没有后缀表示double,因此,如所写,存在明确的歧义。 最佳答案 十六进制float必须使用p指数。指数是使用非十六进制数字(表示要应用于2的指数的十进制整数)定义的。因此,它不能包含“A-F”字符。所以没有歧义。0x1p0F的指数为“0”,类型为float。 关于C++17十六进制浮点文字单精度后缀冲突?,我

RT-DETR算法改进:最新Inner-IoU损失函数,辅助边界框回归的IoU损失,提升RT-DETR检测器精度

💡本篇内容:RT-DETR算法改进:最新Inner-IoU损失函数,辅助边界框回归的IoU损失,提升RT-DETR检测器精度💡本博客改进源代码改进适用于RT-DETR目标检测算法(ultralytics项目版本)按步骤操作运行改进后的代码即可🚀🚀🚀💡改进RT-DETR目标检测算法专属|芒果专栏文章目录一、Inner-IoU损失函数理论部分+最新RT-DETR算法代码实践改进Inner-IoU损失函数二、RT-DETR改进Inner-IoU损失函数改进第一步改进第二步改进第三步网络配置一、Inner-IoU损失函数

C++ 精度 : String to Double

在对转换后的字符串执行一些操作后,我遇到了double的问题。#include#include#includeusingnamespacestd;//conversionfunctionvoidconvert(constchar*a,constinti,double&out){doubleval;istringstreamin(a);in>>val;cout并非所有以字符串形式输入的数字都是这种情况,因此错误不是恒定的。它只影响一些数字(34.38似乎是常数)。目前,当我传入a=34.38和i=100时,它会返回:chara--34.38Val-----34.38modifiedval

c# - 用 C++ 高精度测量时间

如何在C++中像在C#中一样准确地测量某些东西?这是我的C#代码varelapsedMilliseconds=(double)(sw.ElapsedTicks*1000L)/Stopwatch.Frequency;我正在使用visualstudio2010。 最佳答案 C#中的Stopwatch类基于这两个Win32API调用,您可以从C/C++调用它们:QueryPerformanceCounterQueryPerformanceFrequency调用第一个函数除以第二个函数得到一个值,以秒为单位。例子:LARGE_INTEGER

c++ - std::chrono::high_resolution_clock 和屏幕刷新率的准确度(不是精度)

我使用的是visualstudio2012,想知道high_resolution_clock的准确性。基本上我正在编写一些代码来显示声音和图像,但我需要它们非常同步,并且图像必须无撕裂。我正在使用directX提供无撕裂图像,并使用high_resolution_clock定时屏幕刷新。显示器声称为60fps,但是,使用high_resolution_clock的计时给出了60.035fps的刷新率,平均超过10000次屏幕刷新。根据哪个是正确的,我的音频将在一秒后结束0.5毫秒,即一小时后大约2秒。我希望任何时钟都比这更准确-更像是1秒在一年内漂移,而不是一个小时。有没有人以前看过这

c++ - Eigen 浮点精度

我在使用Eigen时遇到浮点精度问题。我有两个Eigen::MatrixXd;第一个矩阵A(nx1)仅包含正整数,而第二个矩阵B(nx1)包含填充相同实数的单个列(例如:-0.714312).我需要计算以下Eigen::MatrixXd:constautoexponential=[](doublex){returnstd::exp(x);};MatrixXdW=B.unaryExpr(exponential);MatrixXdresiduals=A-W;问题是当我打印残差总和时:cout通过使用R和相同的输入矩阵执行相同的操作,我得到了不同的值。通过使用R矩阵,我得到-2.950208

c++ - 机器 Epsilon 精度差异

作为学校作业的一部分,我正在尝试计算C++中double和float的机器epsilon值。我在Windows764位中使用Cygwin,这里是代码:#includeintmain(){doubleepsilon=1;while(1+epsilon>1)epsilon=epsilon/2;epsilon=2*epsilon;std::cout1)epsilon_f=epsilon_f/2;epsilon_f=2*epsilon_f;std::cout当我运行代码时,我收到两个值的1.0842e-019。我查了一下,double值应该是2.22e-16,浮点值应该是1.19e-07。当我

c++ - 用于提高中间浮点计算精度的编译器标志

gcc/clang中是否有指定中间浮点计算精度的标志?假设我有一个C代码doublex=3.1415926;doubley=1.414;doublez=x*y;是否有一个编译器标志允许以用户机器的最高可能精度计算'x*y',比如说,long-double(64位尾数),然后截断回double(53位)尾数,声明变量类型的精度)?仅供引用,我在64位机器上使用Ubuntu14.04。 最佳答案 海湾合作委员会[编辑观察到的gcc4.8.4行为,其中默认行为与文档相反]您需要使用x87FPU中的80位寄存器。使用-mfpmath=387